<?php

namespace IMT\PluginBundle\Models;

use Symfony\Component\Validator\Constraint;

interface PluginManagerInterface
{
    /**
     * Créer une instance de Plugin en fonction du type
     *
     * @return PluginInterface
     */
    function createPlugin();
    
    /**
     * Suppression d'un Plugin
     *
     * @param PluginInterface $Plugin
     */
    function deletePlugin(PluginInterface $Plugin);
    
    /**
     * Modification d'un Plugin
     *
     * @param PluginInterface $Plugin
     */
    function updatePlugin(PluginInterface $Plugin);
    
    /**
     * Retourne la class du Plugin correspondant au type
     * 
     * @return string
     */
    public function getClass();
    
    /**
     * Recherche d'un Plugin dans le repository
     *
     * @return string
     */
    public function findPluginBy(array $criteria);
    
    
}